package com.dyw.Utils;

/**
 * @author Devil
 * @auther Devil(丁杨维)
 * @create 2021-12-28-18:45
 */


import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

/**
 * MyBatis工具类
 */
public class MyBatisUtil {
    /**因为创建sqlSessionFactory是一件很耗费时间的一件事所以我们采用单例设计模式 不过这里我们与常见的单例设计模式不同*/
    private static SqlSessionFactory sqlSessionFactory = null;

    /**采用静态代码块来实例化SqlSessionFactory对象 */
    static{
        try {
            //读取MyBatis配置文件
            InputStream In = Resources.getResourceAsStream("MyBatis.xml");
            //实例化SqlSessionFactory对象
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
            sqlSessionFactory = builder.build(In);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取SqlSession对象
     *
     * @return SqlSession
     */
    public static SqlSession getSqlSession(){
        //通过SqlSessionFactory创建SqlSession供其他程序使用
        return sqlSessionFactory.openSession();
    }
}
